// https://html.spec.whatwg.org/#the-elementinternals-interface

[Exposed=Window]
interface ElementInternals {
  // Shadow root access
  readonly attribute ShadowRoot? shadowRoot;

  // Form-associated custom elements
  // undefined setFormValue((File or USVString or FormData)? value,
  //                        optional (File or USVString or FormData)? state);

  // readonly attribute HTMLFormElement? form;

  // undefined setValidity(optional ValidityStateFlags flags = {},
  //                       optional DOMString message,
  //                       optional HTMLElement anchor);
  // readonly attribute boolean willValidate;
  // readonly attribute ValidityState validity;
  // readonly attribute DOMString validationMessage;
  // boolean checkValidity();
  // boolean reportValidity();

  readonly attribute NodeList labels;

  // Custom state pseudo-class
  // [SameObject] readonly attribute CustomStateSet states;
};

// Accessibility semantics
ElementInternals includes ARIAMixin;

// dictionary ValidityStateFlags {
//   boolean valueMissing = false;
//   boolean typeMismatch = false;
//   boolean patternMismatch = false;
//   boolean tooLong = false;
//   boolean tooShort = false;
//   boolean rangeUnderflow = false;
//   boolean rangeOverflow = false;
//   boolean stepMismatch = false;
//   boolean badInput = false;
//   boolean customError = false;
// };
